Various animation authoring tools are available today with which users may interact to create, modify and/or otherwise author animations. Examples of such animation authoring tools that enable authoring of animation include such computer-executable software applications as Adobe Systems Incorporated's FLASH® and AFTER EFFECTS® authoring tools. In general, animation refers to a graphical object that has one or more properties that change over time. For instance, in a given animation a graphical object may have its position on an output display change over time (e.g., such that the object moves across the display), the graphical object may have its size change over time (e.g., such that the object grows to a larger size or shrinks to a smaller size), the graphical object may have its shape change over time (e.g., such that the object “morphs” into a different shape), the graphical object may have its color (or “tint”) change over time, the graphical object may have its level of opacity or transparency change over time, and/or various other properties of the graphical object may change over time during the given animation. Thus, one or more of such properties of an object as the object's position (x, y), size (or “scale”), skew, rotation (or “orientation”), shape, color (or “tint”), opacity/transparency, etc. may change over time to result in an animation. Accordingly, by defining the graphical object and the various chances to it that occur over time, an author can create a graphical animation, such as a cartoon or other animation. For instance, the animation may be defined in computer-readable software code that is readable by a computer processor to present the animation to an output display. Various techniques for authoring and playing such graphical animations are well known in the art.
“Tweening” is a well-known concept in the art of animation. The word “tween” is derived from “between.” The term originates from traditional animation techniques in which animators would often draw certain keyframes for the animation, and others, perhaps those with less talent or seniority, would do the grunt work of filling in the gaps between the keyframes with “tween” frames to result in a smooth transition from one keyframe to the next (via the tween frames) in the animation.
Today, computer-executable animation authoring applications, such as FLASH® and AFTER EFFECTS® authoring applications, aid designers in performing various animation authoring tasks, including performance of tweening. That is, such animation authoring applications provide tweening support, wherein an author can define keyframes and the authoring application can generate the tween frames. So, animation authoring applications are available which are operable to perform computer generation of tween frames for an animation being authored.
In general, the computer-generated tweening involves the use of a mathematical formulae to generate coordinates that can define the values of a graphical object's property(ies) over a time line. For example, tweening may be performed using an interpolation technique where extra frames are generated between existing keyframes in order to produce smoother animation without requiring an author to manually draw or produce every frame of the animation.
Thus, tweening in animation authoring tools is commonly used to automatically interpolate properties between two known values at two specific times. These known value/time pairs are commonly known as “keyframes.” Animation authoring tools, such as FLASH® and AFTER EFFECTS® allow users to specify keyframes for an animation, and the tools are operable to perform tweening to “fill-in” the values for all frames between the keyframes. These calculated frames are commonly called between frames (and are referred to herein as “tween frames”).
FIG. 1 shows an exemplary illustration of tweening by an animation authoring tool of the prior art. FIG. 1 shows an exemplary system 10 that illustrates a first exemplary tweening technique employed by an animation authoring tool of the prior art. As shown, system 10 comprises a processor-based computer 11, such as a personal computer (PC), laptop computer, server computer, workstation computer, etc. In this example, an animation authoring tool (or “application”) 12 is executing on such a computer 11 with which a user may interact to author a graphical animation, such as exemplary graphical animation 101 shown. Animation authoring tool 12 comprises computer-executable software code stored to a computer-readable medium that is readable by a processor of computer 11 and, when executed by such processor, causes computer 11 to perform the various operations described further herein for such animation authoring application 12. Examples of such an animation authoring tool 12 known in the art include the FLASH® and AFTER EFFECTS® authoring applications.
In the example of FIG. 1, an author interacts with authoring tool 12 to author an animation 101 in which a bird flies across the display. It should be understood that an animation need not have spatial movement by a graphical object (e.g., the bird in this example), but may instead comprise a stationary graphical object that has certain properties (e.g., size, shape, color, orientation, etc.) that change over time. In the example, of FIG. 1, the author specifies a motion path along which the bird moves, and the author provides keyframes key1-key3 at certain time points along the motion path. A timeline is provided, which illustrates a reference time over which the animation is performed. The timeline comprises fixed, linear intervals of time, such as 0 seconds, 0.25 seconds, 0.5 seconds, and so on. In this example, keyframe key1 is arranged at time t=0 seconds in the animation, keyframe key2 is arranged at time t=1 second in the animation, and keyframe key3 is arranged at lime t=2 seconds in the animation.
Authoring tool 12 comprises tweening logic 104 that is operable to perform tweening to venerate tween frames 1021-1023 between keyframes key1 and key2 and to generate tween frames 1031-1033 between keyframes key2 and key3. By default, tweening logic 104 (e.g., computer-executable software) uses simple linear interpolation such that the calculated values for the tween frames transition smoothly between the keyframe values. Assuming the animation 101 is to have a frame rate of 4 frames per second, the time interval between each frame presented in the animation is 0.25 seconds. Thus, tween frames 1021-1023 are generated for presentation at times t=0.25, t=0.5, and t=0.75, respectively; and tween frames 1031-1033 are generated for presentation at times t=1.25, t=1.5, and t=1.75, respectively. Each of the tween frames may change the position of the bird's wings, for instance, to smoothly transition from the wing position of a first keyframe to the wing position of the next keyframe.
Tweening logic 104 performs tweening operation 105 to determine the property value(s) of each of the tween frames as a percentage of change between their respective keyframes as a function of time (according to the timeline, which has fixed, linear intervals of time). For instance, tweening logic 104 performs tweening operation 105 to determine the property value(s) of each of the tween frames 1021-1023 as a percentage of change between their respective keyframes key1 and key2; and tweening logic 104 performs tweening operation 105 to determine the property value(s) of each of the tween frames 1031-1033 as a percentage of change between their respective keyframes key2 and key3. By default, tweening operation 105 uses simple linear interpolation, as illustrated by graph 106, such that the calculated values for the tween frames transition smoothly between the keyframe values. Thus, the property value of each tween frame can be calculated according to the following formula: TP_Value=SKP_Value+(EKP_Value−SKP_Value)*(transition_percent_of_time), wherein the TP_Value refers to the tween frame's property value being computed, the SKP_Value refers to the property value of the starting keyframe for this tween frame, the EKP_Value refers to the property value of the ending keyframe for this tween frame, and the transition_percent_of_time refers to a percentage of transition between the keyframes as a function of time. As an example, the property value for tween frame 1021 is computed in this example as follows: property_value_of_tween_frame_1021=property_value_of_key1+(property_value_of_key2−property_value_of_key1)*(0.25). It should be noted that graph 106 defines a linear interpolation, and thus the “0.25” value for the percentage of transition is arrived at for tween frame 1021 as it resides at time t=0.25 on the timeline of animation 101. Similarly, the property value for tween frame 1022 is computed in this example as follows: property_value_of_tween_frame_1022=property_value_of_key1+(property_value_of_key2−property_value_of_key1)*(0.5). It should be noted that graph 106 defines a linear interpolation, and thus the “0.5” value for the percentage of transition is arrived at for tween frame 1022 as it resides at time t=0.5 on the timeline of animation 101A.
The remaining tween frames are computed in a similar manner. Of course, it should be understood that tween frames 1031-1033 are computed based on their respective starting keyframe key2 and ending keyframe key3. As an example, the property value for tween frame 1031 is computed in this example as follows: property_value_of_tween_frame_1031=property_value_of_key2+(property_value_of_key3−property_value_of_key2)*(0.25). It should be noted that graph 106 defines a linear interpolation, and thus the “0.25” value for the percentage of transition is arrived at for tween frame 1031 as it resides at time t=0.25 past starting keyframe key2 (of course, because key2 resides at time t=1 of animation 101A, tween frame 1031 resides at time t=1.25 on the timeline of the overall animation 101).
Tweening may be performed to generate a desired transition from one keyframe to a next keyframe for any property value differences between the keyframes, such as differences in such properties as positional location on a display, shape, size, color, etc. Thus, while an exemplary tween for transitioning from one position and/or shape (e.g., the shape of the bird in flapping its wings) is shown in FIG. 1, other tweens may be employed in addition or instead for transitioning from one property value to another property value for any of various different properties of a graphical object (e.g., the bird), such as changing the object's size, color, orientation (e.g., rotation), etc. over time.
The linear interpolation according to the graph 106 used in the example of FIG. 1 (where the percentage of transition in property value for each tween frame corresponds with the tween frame's corresponding point on the timeline between the two keyframes) often is not visually appealing as it may not appear natural or may otherwise fail to provide the desired transition from one keyframe to a next keyframe. “Easing” is a concept in which non-linear interpolation may be performed for tweening. That is, by employing easing users can modify the interpolation to make the animation transition between the keyframes in a non-linear fashion. In other words, easing provides a tweening technique in which the percentage of transition in property value for each tween frame need not correspond with the tween frame's corresponding point on the timeline between the two keyframes. Thus, easing may enable a great percentage of a property value change to occur over a first period of the timeline between the two keyframes, and then a smaller percentage of the property value change may occur over another period of the timeline between the two keyframes, as an example. Accordingly, when transitioning from a first property value of the starting keyframe to a second property value of the ending keyframe, easing may be employed to enable tween frames to be generated that perform the transition from the first property value to the second property value at a different rate than the corresponding timeline. For instance, with easing, the property value need not be 50% transitioned from the first value to the second value halfway along the timeline between the two keyframes. Eases are used to describe how the tween frame values are calculated by specifying the actual rate of transition between the two keyframe values. Thus, traditional easing provides a way to alter a transition as a function of time. This can be expressed as a mathematical formula, but eases can also be represented as a graph of percentage change over time.
FIG. 2 shows an exemplary tweening operation in which an easing technique of the prior art is employed. FIG. 2 shows an exemplary system 20 that, like the examples of FIG. 1, comprises processor-based computer 11 on which animation authoring tool 12 is executing, with which a user may interact to author a graphical animation, such as exemplary graphical animation 201 shown. In this example, an author interacts with authoring tool 12 to author an animation 201, wherein an arrow rotates from 0 degrees to 180 degrees. In this example, the author defines keyframe key1 in which the arrow is oriented at 0 degrees, and the author defines keyframe key2 in which the arrow is rotated by 180 degrees. Authoring tool 12 generates the tween frames 2021-2025 for transitioning from key1 to key2. This example assumes that the frame rate is 6 frames per second, and thus the 5 tween frames are generated, and are spaced at equal intervals along the timeline (i.e., the first tween frame 2021 is presented at t=1/6 of the animation, the second tween frame 2022 is presented at t=2/6 of the animation, the third tween frame 2023 is presented at t=3/6 (or t=0.5) of the animation, and so on).
However, instead of the linear interpolation defined by graph 106 that is employed in tweening 105 of FIG. 1, the example of FIG. 2 employs easing in which non-linear interpolation is defined by graph 203. As can be seen, graph 203 defines a transition in which a large percentage of the change in the property value (e.g., rotation in this example) occurs quickly (e.g., over the first half of the timeline between the keyframe), and then the remaining small percentage of change occurs more gradually over the remaining time period. Correspondingly, tween frames 2021-2023 rotate the arrow from 0 degrees to 1.35 degrees from the time t=0 to the time t=0.5, and then tween frames 2024 and 2025 have a more gradual change over time period t=0.5 to t=1 of the animation 201. As such, a change of 135 degrees occurs in the first half of the timeline between the keyframes, while a further change of only 45 degrees occurs in the last half of the timeline between the keyframes. Thus, easing enables a property value change to occur in a non-linear fashion relative to the referenced timeline of the animation.
Accordingly, easing is a known concept in animation, where traditional animation authoring tools enable a user to define an ease that dictates the percentage of change between two keyframe values as a function of time. In this case, the property value for an object (e.g., value of rotation of the arrow in the example of FIG. 2) at any frame (or time) can be obtained by looking up the percentage of transition (or, in some instances a corresponding fixed value) at a specific time according to a defined easing curve, such as curve 203 of FIG. 2.
As shown in the examples of FIGS. 1 and 2, a reference timeline may be provided in a user interface presented to an author by animation authoring tool 12. Such reference timeline enables the author to define a corresponding time over which a given property transition is to occur in an animation being authored. For instance, by placing each of the keyframes at specific time points along the animation's reference timeline, the author can dictate the length of time over which the transition from a first keyframe to a next keyframe is to occur, thus dictating how quickly or how slowly the desired transition is to be performed.
However, traditionally keyframe pairs must be individually edited. That is, traditional animation authoring tools treat each keyframe pair individually, without supporting editing of an animation across multiple keyframe pairs. FIGS. 3A-3C illustrate an exemplary scenario of editing individual keyframe pairs according to a traditional animation authoring tool. FIG. 3A illustrates system 30 comprising an authoring tool 12 executing on a computer 11 and being used for authoring an animation 301A, similar to the animation 101 of FIG. 1. The author has defined three keyframes key1-key3, where key1 is placed at time t=0 along reference timeline 302, key2 is placed at time t=1 along reference timeline 302, and key3 is placed at time t=3 along reference timeline 302. As discussed above, tweening logic 104 generates tween frames between keyframe pair (key1, key2), a portion of which are shown as tween frames 1021-1023, and tweening logic 104 generates tween frames between keyframe pair (key2, key3), a portion of which are shown as tween frames 1031-1033. As discussed above, such tween frames may be generated according to a linear interpolation 106 or according to some easing curve that is employed by tweening logic 104.
Suppose now that the author desires to edit the animation 301A to, for instance, expand its overall length from 3 seconds (i.e., t=3) to 6 seconds. Thus, the author desires to double the overall length of animation 301A such that it takes 6 seconds to complete rather than 3 seconds to complete. Further suppose that the author desires for the relative proportionality between the keyframes to be maintained. Thus, the author desires for the time period between the first keyframe pair (key1, key2) to be doubled from 1 second to 2 seconds, and the author desires for the time period between the second keyframe pair (key2, key3) to be doubled from 2 seconds to four seconds. Authoring tool 12 provides an interface to enable the author to interact with the keyframes an or timeline 302 to edit the time period of between each keyframe pair. However, traditionally such editing must be performed individually for each keyframe pair. For instance, as shown in FIG. 3A, the author may select keyframe key3 (e.g., by clicking it with a mouse) and drag such keyframe key3 to its desired time point (i.e., 6 seconds in this example) along reference timeline 302, thus resulting in animation 301B as shown in FIG. 3B. In the resulting animation 301B, the proportionality of time between the keyframe pairs has not been maintained, as the time between keyframe pair (key1, key2) remains 1 second, while the time period between keyframe pair (key2, key3) has been modified to be 5 seconds. Accordingly, the author may then edit the time period of the first keyframe pair by, for instance, clicking keyframe key2 with a mouse and dragging such keyframe key2 to its desired time point (i.e., 2 seconds in this example) along reference timeline 302, thus resulting in animation 301C as shove in FIG. 3C. Tweening logic 104 may then be utilized to generate the appropriate tween frames between the keyframe pairs having their modified time periods, a portion of which are again shown as tween frames 1021-1023 (between keyframe pair key1, key2) and tween frames 1031-1033 (between keyframe pair key2, key3). Because the time periods have been expanded for each keyframe pair in this example, more tween frames than were generated for animation 301A may be generated in order to provide the desired frame rate for the revised animation 301B.
Some authoring tools, such as AFTER EFFECTS®, allow an author to designate certain keyframes as “roving” keyframes. Using such a roving keyframe feature, an author can effectively create smooth movement across several keyframes at once. Roving keyframes are keyframes that are not linked to a specific time on the animation's reference timeline, as opposed to non-roving keyframes (such as those described above with FIGS. 3A-3C), which are linked to a specific time on the animation's reference timeline. The speed and timing of roving keyframes are determined by adjacent keyframes. When an author changes the position of a keyframe adjacent to a roving keyframe in a motion path, the timing of the roving keyframe may change. Roving keyframes are generally available only for use in defining spatial layer properties, such as position, of a graphical object. In addition, a keyframe can rove only if it is not the first or last keyframe in a layer, because a roving keyframe must interpolate its speed from the previous and next keyframes. Thus, an author may designate beginning an ending keyframes as non-roving keyframes and designate intermediate keyframes as roving, wherein the author may adjust the time period between the beginning and ending keyframes and the roving keyframes will automatically adjust to maintain their relationship relative to the non-roving keyframes.
However, the roving keyframe feature is limited in its application in that the roving keyframes are determined on the basis of two non-roving keyframes. Editing of the animation across a plurality of non-roving keyframe pairs is not supported, as discussed above with FIGS. 3A-3C. Suppose, for instance, that an animation contains a first pair of non-roving keyframes with intermediate roving keyframes between them, and further suppose that the animation contains a second pair of non-roving keyframes with intermediate roving keyframes between them. Then, suppose that an author desires to modify the time for the overall animation (i.e., across the two pairs of non-roving keyframes), this would traditionally require the author to perform the individual editing operations for each of the non-roving keyframe pairs in the manner discussed above with FIGS. 3A-3C. Thus, even though the roving keyframes may automatically adjust responsive to movement of their respective non-roving keyframes on the reference timeline, editing of the time across the plurality of pairs of non-roving keyframes is not supported by traditional authoring tools 12.
Accordingly, a desire exists for an improved technique for animation editing which enables editing, particularly time editing, across a plurality of keyframe pairs, particularly non-roving keyframe pairs, in the animation.